/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-08-17
 * Time: 22:35
 */

public class Solution {
    public static int canCompleteCircuit(int[] gas, int[] cost) {
        int from = 0; // 起点
        int len = gas.length;
        while (from < len) {
            int path = 0;
            int sumOfGas = 0;
            int sumOfCost = 0;
            // 还没有跑一圈
            while (path < len) {
                // 到达的位置
                int position = (from+path) % len;
                sumOfGas += gas[position];
                sumOfCost += cost[position];
                // 到达不了下一站
                if (sumOfCost > sumOfGas) {
                    break;
                }
                // 到达下一站距离就 ++
                path++;
            }
            // 已经跑一圈了
            if (path == len) {
                return from;
            } else {
                // 跑的途中没油了
                // 从 from 到不了 position 后面那一站, 那么这条路径上的所有点都到不了 position 后面那一站
                // 所以直接从 到不了的那一站开始作为起始点
                from = from + path + 1;
            }
        }
        return -1;
    }
}
